package com.jch.helloworld;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    // Java 常规使用对象
    public void test(){
        // 1. 创建对象
        HelloWorld helloWorld = new HelloWorld();
        // 2. 为私有对象赋值
        helloWorld.setName("常规");
        // 3. 调用目标方法
        helloWorld.sayHello();
    }

    public void useSpring(){
        // 1. 创建Spring的IOC容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 2. 从容器中获取Bean
        HelloWorld helloWorld = (HelloWorld) ctx.getBean("helloWorld");// 使用Bean ID获取Bean
        // 3. 调用方法
        helloWorld.sayHello();
    }

    public void useSpring1(){
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        HelloWorld helloWorld = ctx.getBean(HelloWorld.class); // 通过类型获取bean，要求该类型的bean具有唯一性
        helloWorld.sayHello();
    }

    public void springApplicationContextFunction(){
        new ClassPathXmlApplicationContext("applicationContext.xml");
    }

    public static void main(String[] args) {
        Main main = new Main();
        System.out.println("Java 常规方式：");
        main.test();
        System.out.println();
        System.out.println("Spring 方式：");
        main.useSpring();
        System.out.println();
        System.out.println("Spring 另一种获取Bean的方式：");
        main.useSpring1();
        System.out.println();
        System.out.println("Spring ApplicationContext 的作用：");
        main.springApplicationContextFunction();
    }

}
